In a PC, the CPU is the active component, controlling all other
parts.
For that, it is required, that each component can be identified
WITHOUT interference of other components. This is done by assigning a UNIQUE
address (Think about it like a discussion in a group of
people: when you ask the question: "John, how are you doing ?" and there is more
than one "John" in the group, you would get most probably simultaneously an
answer from multiple persons, which you then would not understand. It is the
same with computers)
Addresses in a PC are numbers,
but in PC's it is custom to express such addresses in a special method:
"Hexadecimal".
To
explain that, lets first see, how humans are counting, which is based on having
10 fingers on 2 hands:
![]() ![]() |
1 | ![]() |
![]() ![]() |
6 | ||
![]() ![]() |
2 | ![]() ![]() |
7 | |||
![]() ![]() |
3 | ![]() ![]() |
8 | |||
![]() ![]() |
4 | ![]() ![]() |
9 | |||
![]() ![]() |
5 | ![]() ![]() |
10 |
As soon we have reach our maximum number of fingers, we need a
second pair of hands to continue to count:
![]() ![]() |
![]() ![]() |
10 | |
![]() ![]() |
![]() ![]() |
11 | |
![]() ![]() |
![]() ![]() |
12 | |
![]() ![]() |
![]() ![]() |
13 |
and it continues. Staring at 99/100, a third pair of hands is
required.
But computers do NOT have hands with fingers, they work with
electricity, which is either on or off.
Lets continue with the pictures of a
hand, but lest use only 1 thumb of 1 hand, which is:
![]() |
UP: Power ON |
![]() |
Down: Power OFF |
Such an item with status ON/OFF is called: a BIT.
Numbers expressed in
"Bits" are "Binary"
number.
Lets count now again, and you see, we need a lot of additional
thumbs:
Counting "Binary" |
Counting Decimal | |||||||||
![]() |
1 | 1 | ||||||||
![]() |
![]() |
10 | 2 | |||||||
![]() |
![]() |
11 | 3 | |||||||
![]() |
![]() |
![]() |
100 | 4 | ||||||
![]() |
![]() |
![]() |
101 | 5 | ||||||
![]() |
![]() |
![]() |
110 | 6 | ||||||
![]() |
![]() |
![]() |
111 | 7 | ||||||
![]() |
![]() |
![]() |
![]() |
1000 | 8 | |||||
![]() |
![]() |
![]() |
![]() |
1001 | 9 | |||||
![]() |
![]() |
![]() |
![]() |
1010 | 10 | |||||
![]() |
![]() |
![]() |
![]() |
1011 | 11 | |||||
![]() |
![]() |
![]() |
![]() |
1100 | 12 | |||||
![]() |
![]() |
![]() |
![]() |
1101 | 13 | |||||
![]() |
![]() |
![]() |
![]() |
1110 | 14 | |||||
![]() |
![]() |
![]() |
![]() |
1111 | 15 | |||||
![]() |
![]() |
![]() |
![]() |
![]() |
10000 | 16 | ||||
![]() |
![]() |
![]() |
![]() |
![]() |
10001 | 17 | ||||
![]() |
![]() |
![]() |
![]() |
![]() |
10010 | 18 | ||||
![]() |
![]() |
![]() |
![]() |
![]() |
10011 | 19 | ||||
![]() |
![]() |
![]() |
![]() |
![]() |
10100 | 20 | ||||
![]() |
![]() |
![]() |
![]() |
![]() |
10101 | 21 |
These binary number are getting quickly very long and are very
difficult to remember, so it is now custom to express such binary numbers as
"hexadecimal" number, i.e. we combine 4 binary Bits to a single
character:
Binary: | Decimal: | Hexadecimal: | |||||
0 1 10 11 100 101 110 111 1000 1001 |
0 1 2 3 4 5 6 7 8 9 |
0 1 2 3 4 5 6 7 8 9 | |||||
1010 1011 1100 1101 1110 1111 |
10 11 12 13 14 15 |
A B C D E F |
Up to the number 9, the counting is the same for Decimal and Hexadecimal. But the numbers 10-15 are expressed using the characters A-F | ||||
1 1 1 |
0000 0001 0010 |
16 17 18 |
10 11 12 |
Hexadecimal numbers are often marked with an 'h' at the end,
to avoid to have them mistaken as decimal numbers ( example: 100h =
256).
Why do we need to take it up with these "hexadecimal" number
?
Because it has become custom on PC-compatible hardware components to
express the addresses as Hexadecimal numbers !
These hardware addresses
are also called:
- Input/Output Address
-
Input/Output Port
- I/O
Port
or just:
- Port
You can
view the addresses already assigned in your Windows95 system:
There are some
defaults:
3F8h: | Serial port COM1 |
2F8h: | Serial port COM2 |
3E8h: | Serial port COM3 |
2E8h: | Serial port COM4 |
For Network cards (NIC's), addresses 300h, 320h and 340h are most often used.